// #include <pthread.h>

// namespace MyMutex
// {
//     class Mutex
//     {
//     private:
//         pthread_mutex_t _mutex;

//     public:
//         void Lock()
//         {
//             pthread_mutex_lock(&_mutex);
//         }

//         void Unlock()
//         {

//             pthread_mutex_unlock(&_mutex);
//         }

//         Mutex()
//         {
//             pthread_mutex_init(_mutex, nullptr);
//         }

//         Mutex(const Mutex &_mutex) = delete;
//         const const Muetx &operator=(const Mutex &) = delete;
//         ~Mutex()
//         {
//             pthread_mutex_destroy(&_mutex);
//         }
//     }

//     class Lockguard
//     {
//     public:
//         Lockguard(Mutex &_out_lock) : _mutex(_out_lock)
//         {
//             _mutex.Lock();
//         }

//         ~Lockguard()
//         {
//             _mutex.Unlock();
//         }

//     private:
//         Mutex &_mutex;
//     }

// }